/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GlobalObservingSystem.Interfaces;

import GlobalObservingSystem.Mundo.BaseDatos.EventoBD;
import GlobalObservingSystem.Mundo.BaseDatos.UsuarioBD;
import GlobalObservingSystem.Mundo.Coordenada;

/**
 *
 * @author js.rojas131
 */
public interface IAdminUsuarios {

    /**
     * Dado un Id retorna un usuario de la base de datos.
     * @param String Login del usuario que esta buscando
     * @return UsuarioBD Usuario pedido
     */
    public UsuarioBD consultarUsuario(String login);

    /**
     * Retorna si exite un usuario, con el login dado
     * @param login, login del usuario que desea validad
     * @return, retorna true si el usuario existe , false si el usuario no existe
     */
    public boolean existeUsuario(String login);

    /**
     * Metodo que retorna el evento actual
     * @return Evento Actual
     */
    public EventoBD getEvento();

     /**
     * Metoro de registra un usuario nuevo.
     * @param login Login para ingresar al sistema
     * @param password Password para entrar al sistema
     * @param tipoUser Tipo del usuario,
     * @param nombreUser Nombre del usuario
     * @param email Email del usuario
     * @return Si fue posible registrarlo retorna true si no false.
     */
    public boolean registrarUsuario(String login, String password, String tipoUser, String nombreUser, String email);


     /**
     * Metoro que guarda un usuario.
     * @param login Login para ingresar al sistema
     * @param password Password para entrar al sistema
     * @param tipoUser Tipo del usuario,
     * @param nombreUser Nombre del usuario
     * @param email Email del usuario
     * @return Si fue posible guardar el usuario retorna true si no false.
     */
    public boolean guardarUsuario(String login, String password, String tipoUser, String nombreUser, String email);

         /**
     * Metoro que elimina un usuario
     * @return Si fue borrado retorna true si no false
     */
    public boolean eliminarUsuario();

     /**
     * Metoro que modifica un usuario.
     * @param login Login para ingresar al sistema
     * @param password Password para entrar al sistema
     * @param tipoUser Tipo del usuario,
     * @param nombreUser Nombre del usuario
     * @param email Email del usuario
     * @return Si fue posible modificar el usuario retorna true si no false.
     */
    public boolean modificarUsuario(String login, String password, String tipoUser, String nombreUser, String email);

    /**
     * Metoro para ingresar al sistema
     * @param login Login del usuario
     * @param password Password del usuario
     * @return Si pudo ingresar retorna true, si no false
     */
    public boolean ingresarSistema(String login, String password);

   /**
    * Suscribe un usuario a un evento
    * @param tipo Tipo del evento
    * @param variacion variacion del evento
    * @param valor Valor del eventro
    * @param latitud1 latitud del evento
    * @param longitud1 longitud del evento
    * @param latitud2 latitud del evento
    * @param longitud2 longitud del evento
    */
    public void suscribirEvento(String tipo, String variacion, double valor, Coordenada latitud1, Coordenada longitud1, Coordenada latitud2, Coordenada longitud2);

    /**
     * Valida el acceso del los usuario
     * @param login login del usuario
     * @param password Contraseña del usuario
     * @return true si es valido , false si no es valido
     */
    public boolean validarAcceso(String login, String password);

    /**
     * Retorna el nombre del usuario
     * @return nombre del usuario
     */
    public String getNombreUser();

    /**
     * Retorna el mail del usuario
     * @return mail del usuario
     */
    public String getEmailUser();

    public UsuarioBD getUsuario();

    public boolean suscribirSitio( double latitud, double longitud );

    public boolean esClimatologo();
}
